#ifndef _TWOGRE_PREREQUISITES_H_
#define _TWOGRE_PREREQUISITES_H_

#include <vector>

#include "AntTweakBar.h"

#include "OgreString.h"

namespace TwOgre{
#define TwOgreExport

//TODO: Deal with double precision Ogre here (i.e. Ogre::Real == double)

#define INT_INFINITY std::numeric_limits<int>::infinity()
#if OGRE_DOUBLE_PRECISION == 1
#	define REAL_INFINITY std::numeric_limits<double>::infinity()
#	define TW_TYPE_REAL TW_TYPE_DOUBLE
#else
#	define REAL_INFINITY std::numeric_limits<float>::infinity()
#	define TW_TYPE_REAL TW_TYPE_FLOAT
#endif

    typedef std::pair<int,Ogre::String> EnumValue;
    typedef std::vector<EnumValue> EnumValueList;

    class BoolVariable;
    class ColorVariable;
    class EnumVariable;
    class IntegerVariable;
    class RealVariable;
    class StringVariable;
    class ButtonVariable;
    class Variable;
    class Window;
    class WindowManager;
}; // End Namespace
#endif
